ZGlmZiAtLWdpdCBhL2JvYXJkL2VORVQvZU5FVF9wY2kuYyBiL2JvYXJkL2VORVQvZU5FVF9wY2kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODBhOGZlCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZU5FVC9lTkVUX3BjaS5jCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDgKKyAqIEdyYWVtZSBSdXNzLCBncmFlbWUucnVzc0BnbWFpbC5jb20uCisgKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiA8ZGFuaWVsQG9taWNyb24uc2U+LgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8cGNpLmg+CisjaW5jbHVkZSA8YXNtL3BjaS5oPgorI2luY2x1ZGUgPGFzbS9pYy9wY2kuaD4KKworc3RhdGljIHZvaWQgcGNpX2VuZXRfZml4dXBfaXJxKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwgcGNpX2Rldl90IGRldikKK3sKKwkvKiBhIGNvbmZpZ3VyYWJsZSBsaXN0cyBvZiBJUlFzIHRvIHN0ZWFsIHdoZW4gd2UgbmVlZCBvbmUgKi8KKwlzdGF0aWMgaW50IGlycV9saXN0W10gPSB7CisJCUNPTkZJR19TWVNfRklSU1RfUENJX0lSUSwKKwkJQ09ORklHX1NZU19TRUNPTkRfUENJX0lSUSwKKwkJQ09ORklHX1NZU19USElSRF9QQ0lfSVJRLAorCQlDT05GSUdfU1lTX0ZPUlRIX1BDSV9JUlEKKwl9OworCXN0YXRpYyBpbnQgbmV4dF9pcnFfaW5kZXg9MDsKKworCXVjaGFyIHRtcF9waW47CisJaW50IHBpbjsKKworCXBjaV9ob3NlX3JlYWRfY29uZmlnX2J5dGUoaG9zZSwgZGV2LCBQQ0lfSU5URVJSVVBUX1BJTiwgJnRtcF9waW4pOworCXBpbiA9IHRtcF9waW47CisKKwlwaW4gLT0gMTsgLyogUENJIGNvbmZpZyBzcGFjZSB1c2UgMS1iYXNlZCBudW1iZXJpbmcgKi8KKwlpZiAocGluID09IC0xKSB7CisJCXJldHVybjsgLyogZGV2aWNlIHVzZSBubyBpcnEgKi8KKwl9CisKKwkvKiBtYXAgZGV2aWNlIG51bWJlciArICBwaW4gdG8gYSBwaW4gb24gdGhlIHNjNTIwICovCisJc3dpdGNoIChQQ0lfREVWKGRldikpIHsKKwljYXNlIDEyOgkvKiBGaXJzdCBFdGhlcm5ldCBDaGlwICovCisJCXBpbiArPSBTQzUyMF9QQ0lfSU5UQTsKKwkJYnJlYWs7CisKKwljYXNlIDEzOgkvKiBTZWNvbmQgRXRoZXJuZXQgQ2hpcCAqLworCQlwaW4gKz0gU0M1MjBfUENJX0lOVEI7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJcmV0dXJuOworCX0KKworCXBpbiAmPSAzOyAvKiB3cmFwIGFyb3VuZCAqLworCisJaWYgKHNjNTIwX3BjaV9pbnRzW3Bpbl0gPT0gLTEpIHsKKwkJLyogcmUtcm91dGUgb25lIGludGVycnVwdCBmb3IgdXMgKi8KKwkJaWYgKG5leHRfaXJxX2luZGV4ID4gMykgeworCQkJcmV0dXJuOworCQl9CisJCWlmIChwY2lfc2M1MjBfc2V0X2lycShwaW4sIGlycV9saXN0W25leHRfaXJxX2luZGV4XSkpIHsKKwkJCXJldHVybjsKKwkJfQorCQluZXh0X2lycV9pbmRleCsrOworCX0KKworCWlmICgtMSAhPSBzYzUyMF9wY2lfaW50c1twaW5dKSB7CisJcGNpX2hvc2Vfd3JpdGVfY29uZmlnX2J5dGUoaG9zZSwgZGV2LCBQQ0lfSU5URVJSVVBUX0xJTkUsCisJCQkJCSAgIHNjNTIwX3BjaV9pbnRzW3Bpbl0pOworCX0KKwlwcmludGYoImZpeHVwX2lycTogZGV2aWNlICVkIHBpbiAlYyBpcnEgJWRcbiIsCisJICAgICAgIFBDSV9ERVYoZGV2KSwgJ0EnICsgcGluLCBzYzUyMF9wY2lfaW50c1twaW5dKTsKK30KKworc3RhdGljIHN0cnVjdCBwY2lfY29udHJvbGxlciBlbmV0X2hvc2UgPSB7CisJZml4dXBfaXJxOiBwY2lfZW5ldF9maXh1cF9pcnEsCit9OworCit2b2lkIHBjaV9pbml0X2JvYXJkKHZvaWQpCit7CisJcGNpX3NjNTIwX2luaXQoJmVuZXRfaG9zZSk7Cit9Cg==